using System;
using System.Collections;
using System.IO;
using System.Text;
using System.Web;

namespace WebMonitor.Http.Impl {
    /// <summary>
    /// Summary description for HttpResponseAdapter.
    /// </summary>
    public class HttpResponseAdapter : IHttpResponse {
        private readonly HttpResponse response;

        public HttpResponseAdapter(HttpResponse response) {
            this.response = response;
        }

        public void AddFileDependency(string filename) {
            response.AddFileDependency(filename);
        }

        public void AddFileDependencies(ArrayList filenames) {
            response.AddFileDependencies(filenames);
        }

        public void AddCacheItemDependency(string cacheKey) {
            response.AddCacheItemDependency(cacheKey);
        }

        public void AddCacheItemDependencies(ArrayList cacheKeys) {
            response.AddCacheItemDependencies(cacheKeys);
        }

        public void Close() {
            response.Close();
        }

        public void BinaryWrite(byte[] buffer) {
            response.BinaryWrite(buffer);
        }

        public void Pics(string value) {
            response.Pics(value);
        }

        public void AppendHeader(string name, string value) {
            response.AppendHeader(name, value);
        }

        public void AppendCookie(HttpCookie cookie) {
            response.AppendCookie(cookie);
        }

        public void SetCookie(HttpCookie cookie) {
            response.SetCookie(cookie);
        }

        public void ClearHeaders() {
            response.ClearHeaders();
        }

        public void ClearContent() {
            response.ClearContent();
        }

        public void Clear() {
            response.Clear();
        }

        public void Flush() {
            response.Flush();
        }

        public void AppendToLog(string param) {
            response.AppendToLog(param);
        }

        public void Redirect(string url) {
            response.Redirect(url);
        }

        public void Redirect(string url, bool endResponse) {
            response.Redirect(url, endResponse);
        }

        public void Write(string s) {
            response.Write(s);
        }

        public void Write(object obj) {
            response.Write(obj);
        }

        public void Write(char ch) {
            response.Write(ch);
        }

        public void Write(char[] buffer, int index, int count) {
            response.Write(buffer, index, count);
        }

        public void WriteFile(string filename) {
            response.WriteFile(filename);
        }

        public void WriteFile(string filename, bool readIntoMemory) {
            response.WriteFile(filename, readIntoMemory);
        }

        public void TransmitFile(string filename) {
            response.TransmitFile(filename);
        }

        public void WriteFile(string filename, long offset, long size) {
            response.WriteFile(filename, offset, size);
        }

        public void WriteFile(IntPtr fileHandle, long offset, long size) {
            response.WriteFile(fileHandle, offset, size);
        }

        public void AddHeader(string name, string value) {
            response.AddHeader(name, value);
        }

        public void End() {
            response.End();
        }

        public string ApplyAppPathModifier(string virtualPath) {
            return response.ApplyAppPathModifier(virtualPath);
        }

        public HttpCookieCollection Cookies {
            get { return response.Cookies; }
        }

        public int StatusCode {
            get { return response.StatusCode; }
            set { response.StatusCode = value; }
        }

        public string StatusDescription {
            get { return response.StatusDescription; }
            set { response.StatusDescription = value; }
        }

        public bool BufferOutput {
            get { return response.BufferOutput; }
            set { response.BufferOutput = value; }
        }

        public string ContentType {
            get { return response.ContentType; }
            set { response.ContentType = value; }
        }

        public string Charset {
            get { return response.Charset; }
            set { response.Charset = value; }
        }

        public Encoding ContentEncoding {
            get { return response.ContentEncoding; }
            set { response.ContentEncoding = value; }
        }

        public HttpCachePolicy Cache {
            get { return response.Cache; }
        }

        public bool IsClientConnected {
            get { return response.IsClientConnected; }
        }

        public string RedirectLocation {
            get { return response.RedirectLocation; }
            set { response.RedirectLocation = value; }
        }

        public TextWriter Output {
            get { return response.Output; }
        }

        public Stream OutputStream {
            get { return response.OutputStream; }
        }

        public Stream Filter {
            get { return response.Filter; }
            set { response.Filter = value; }
        }

        public bool SuppressContent {
            get { return response.SuppressContent; }
            set { response.SuppressContent = value; }
        }

        public string Status {
            get { return response.Status; }
            set { response.Status = value; }
        }

        public bool Buffer {
            get { return response.Buffer; }
            set { response.Buffer = value; }
        }

        public int Expires {
            get { return response.Expires; }
            set { response.Expires = value; }
        }

        public DateTime ExpiresAbsolute {
            get { return response.ExpiresAbsolute; }
            set { response.ExpiresAbsolute = value; }
        }

        public string CacheControl {
            get { return response.CacheControl; }
            set { response.CacheControl = value; }
        }
    }
}